1. Statement of the Technical Field
The present invention relates to the field of software application performance monitoring and measurement and more particularly to the monitoring and measurement of script performance executing within a script engine.
2. Description of the Related Art
The art of software development extends far beyond a mere coding of a functional specification for a computer program. Modern software development conforms to a lifecycle which begins with the functional specification leading into the formulation of a suitable architecture for an application implementing the functional specification. The lifecycle continues with the physical coding of the application and includes iterative testing and modification cycles to ensure the integrity of the code. Finally, the execution of the completed code can be analyzed to facilitate the further revision of the code to improve the performance of the code.
Traditional performance testing of a computer program can include the external monitoring of the performance of the program, either subjectively based upon end user impression, or objectively based upon independently acquired performance metrics. In the latter circumstance, the performance of the program can include an internal monitoring of the code through software test tooling as is known in the art. Specifically, code under study can be instrumented with additional functionality to record and report performance metrics which can be analyzed online or offline to determine the performance of the tooled code.
Trends in computer science have included a larger emphasis upon program logic which is no longer confined to mere compiled code. Due in part to the explosion of network distributable application logic such as Web based applications, processor specific compiled logic no longer meets the requirements of a widely distributable application involving many different types of computing platforms. To accommodate the new paradigm, script logic has supplanted compiled logic at least in the context of the network distributable computing application.
Generally, script logic involves a platform agnostic set of instructions which, at run-time, can be interpreted by a script engine. The script engine can translate the agnostic set of instructions into platform specific instructions which in turn can be executed in the specific platform. Examples include not only client side, Web browser based and server-side executed scripts such as Javascript and VBScript, but also more traditional scripting environments including Perl. Thus, while script logic generally has existed in one form or another for decades, including rudimentary forms of the BASIC programming language, the popularization of the Internet has breathed new life into this mode of computing.
Due in large part to the structural difference between compiled code and interpreted code, testing the performance of a script involves different considerations than those encountered when testing the performance of compiled code. Specifically, whereas compiled code can be fast as a native implementation of program logic, interpreted script can be relatively slow due to the requirement that the script is interpreted on the fly. As such, to interject instrumentation into the script itself can produce an intrusive element which can affect the performance so as to render the test results useless. Moreover, code reuse for the instrumented code can be difficult at best. Yet, without the proper instrumentation, it is not possible to effectively monitor and measure the performance of a script as the script is interpreted within a script engine.